# -*- coding: utf-8 -*-
# author yzs
# date 2018-12-08
#
# 子数组的取值范围
# Description
# 给定数组arr和整数num，求arr的子数组中满足：其最大值减去最小值的结果大于num的个数。请实现一个时间复杂度为O(length(arr))的算法。
# Input
# 输入的第一行为数组，每一个数用空格隔开，第二行为num。
# Output
# 输出一个值。
# Sample Input 1 
# 3 6 4 3 2
# 2
# Sample Output 1
# 6
# 核心思想：如果当子数组arr[i..j]满足max(arr[i..j])-min(arr[i..j])>num时，那么arr[i..j]中的每一个子数组都应该满足条件。


def get_conditional_sub_array_count(data, num):
    min_queue = []
    max_queue = []
    data_len = len(data)
    j = 0
    count = 0
    for i in range(data_len):
        while j < data_len:
            while min_queue and data[j] <= data[min_queue[-1]]:
                min_queue.pop()
            min_queue.append(j)
            while max_queue and data[j] >= data[max_queue[-1]]:
                max_queue.pop()
            max_queue.append(j)
            if data[max_queue[0]] - data[min_queue[0]] > num:
                break
            j += 1
        count += j - i
        if min_queue[0] == i:
            min_queue.remove(i)
        if max_queue[0] == i:
            max_queue.remove(i)
    return int(data_len * (data_len + 1) / 2 - count)


while True:
    try:
        data = list(map(int, input().strip().split()))
        num = int(input().strip())
        count = get_conditional_sub_array_count(data, num)
        print(count)
    except EOFError:
        break
